<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./js/vue.js"></script>
    <title>非单文件组件</title>
    <style>
        
    </style>
</head>
<body>
    <div id="root">
        <!-- 
           Vue中使用组件的三大步骤：
           1. 定义组件(创建组件)
           2. 注册组件(全局注册/局部注册)
           3. 使用组件(写组件标签)

           一、如何定义一个组件
           使用Vue.extend(options)方法创建组件，其中optiions和 new Vue(options)中的options一样，包含template、data、methods等属性。
           区别如下：
           1.el不要写，为什么--最终所有的组件都要经过一个vm的管理，由vm的el来决定付哪个容器
           2.data必须写成函数,为什么(避免组件被复用时，数据存在引用关系)
           备注:使用template可以配置组件结构
           二、如何注册组件
           全局注册：Vue.component(tagName, component)
           局部注册：components: {tagName: component}
           三、如何使用组件
           写组件标签：<tagName></tagName>
           备注：tagName就是组件的名字，在注册时，可以自定义tagName，也可以使用默认的名字，比如：Vue.component("school", school)
        -->
        <!-- 第三步 使用组件 -->
        <school></school>
        <school></school>
        <hr>
        <student></student>
    </div>
    <div id="app">
        <hello></hello>
    </div>
</body>
<script>

    //第一步 创建组件
    const school = Vue.extend({
        template: `
            <div>
                <h1>学校名称:{{schoolName}}</h1>
                <h1>学校地址:{{address}}</h1>
                <button @click="showSchoolName">点我显示学校名称</button>
            </div>`,
        data() {
            return {
                schoolName: "尚硅谷",    // 学校名称
                address: "北京市海淀区西二旗"  // 学校地址
            }
        },
        methods: {
            showSchoolName() {
                alert(this.schoolName);
            }
        }
    })

    //第一步 创建组件
    const student = Vue.extend({
        template: `
            <div>
                <h1>学生姓名:{{studentName}}</h1>
                <h1>学生年龄:{{studentAge}}</h1>
            </div>`,
        data() {
            return {
                studentName: "张三",    // 学生姓名
                studentAge: 20  // 学生年龄
            }
        }
    })

    //第一步 创建组件
    const hello = Vue.extend({
        template: `
            <div>
                <h1>你好啊{{name}}</h1>
            </div>`,
        data() {
            return {
                name: "张三"
            }
        }
    })

    // 第二步，注册组件(全局注册)
    Vue.component("hello", hello);
   
    var vm = new Vue({
        el: '#root',
        // 第二步，注册组件(局部注册)
        components: {
            "school": school,
            "student": student
        }
    })
   
    var app = new Vue({
        el: '#app'
    })
    </script>
</html>